home *** CD-ROM | disk | FTP | other *** search
- % This file can be loaded after plain.mf.
- % It introduces conventions that are commonly used on my home computer.
- base_version:=base_version&"/art";
-
- screen_rows:=1024; screen_cols:=1024;
-
- % Here are conventions for local output devices:
-
- mode_def imagen = % imagen mode: for the Imagen 8/300 (Canon engine)
- proofing:=0; % no, we're not making proofs
- fontmaking:=1; % yes, we are making a font
- tracingtitles:=0; % no, don't show titles in the log
- pixels_per_inch:=300;
- blacker:=0; % Canon engine is black enough
- fillin:=.2; % and it tends to fill in diagonals
- o_correction:=.6; %
- enddef;
-
- mode_def aps = % aps mode: for the Autologic APS-Micro5
- proofing:=0; % no, we're not making proofs
- fontmaking:=1; % yes, we are making a font
- tracingtitles:=1; % yes, show titles online
- pixels_per_inch:=722.909; % that's roughly 10 per pt
- blacker:=.2; % make pens a teeny bit blacker
- fillin:=.2; % but compensate for diagonal fillin
- o_correction:=1; % and keep the full overshoot
- enddef;
-
- localfont:=imagen;
-
- % Macros to add mode information specials to fonts. (by Pierre MacKay)
-
- def mode_special(suffix $) =
- string s,d;
- s:=str$; d:=decimal scantokens s;
- special s&":="&d&";" enddef;
-
- def font_mode_specials =
- p_p_i=pixels_per_inch/mag;
- if fontmaking > 0:
- begingroup; save d,s,p; save pixels_per_inch;
- string p;
- pixels_per_inch:=p_p_i;
- special jobname;
- mode_special(mag);
- if string mode: p:=mode;
- else: p:=substring(0,length(mode_name[mode])-1) of mode_name[mode]; fi
- special "mode:="&p&";";
- mode_special(pixels_per_inch);
- mode_special(blacker);
- mode_special(fillin);
- mode_special(o_correction);
- endgroup;
- fi
- enddef;
-
- % Finally, here are macros for Xerox-world font info:
-
- def font_family expr s = % string s names the font family, e.g., "CMR"
- headerbyte 49: BCPL_string(s,20);
- special "identifier "&s enddef;
- def coding_scheme expr s = % string s names the scheme, e.g. "TEX TEXT"
- headerbyte 9: BCPL_string(s,40);
- special "codingscheme "&s enddef;
- def font_face_byte expr x = % integer x gives the family member number,
- headerbyte 72: x; % which should be between 0 and 255
- special "fontfacebyte"; numspecial x enddef;
-
- def BCPL_string(expr s,n)= % string s becomes an n-byte BCPL string
- for l:=if length(s)>=n: n-1 else: length(s) fi: l
- for k:=1 upto l: , substring (k-1,k) of s endfor
- for k:=l+2 upto n: , 0 endfor endfor enddef;
-
- Xerox_world:=1; % users can say `if known Xerox_world:...fi'
-
- inner end;
- def bye=
- if fontmaking>0: font_family font_identifier_;
- coding_scheme font_coding_scheme_;
- font_face_byte max(0,254-round 2designsize);
- font_mode_specials; fi
- end
- enddef;
-
- outer bye,end;
-